package com.novanok.micurso;

import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import com.firebase.client.ChildEventListener;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
import com.novanok.micurso.entidad.Comun;
import java.util.HashMap;
import java.util.Map;

public class CursosAlumnoItemActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cursos_alumno_item_activity);
        Firebase.setAndroidContext(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.curso_item, menu);
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch ( item.getItemId() ) {
            case R.id.aceptar:
                this.nuevaInscripcion();
                return true;

            case R.id.cancelar:
                finish();
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

    private void nuevaInscripcion(){
        final String emailProfesor = ((EditText)findViewById(R.id.txtEmailProfesor)).getText().toString();
        final String curso_id = ((EditText)findViewById(R.id.txtCursoId)).getText().toString();

        boolean resultado = true;
        if ( resultado && emailProfesor.trim().compareTo("") == 0 ){
            resultado = false;
            Mensaje.getMensaje().mostrarInformacion(this, CursosAlumnoItemActivity.this.getResources().getString(R.string.msgEmailProf), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });
        }

        if ( resultado && curso_id.trim().compareTo("") == 0 ){
            resultado = false;
            Mensaje.getMensaje().mostrarInformacion(this, CursosAlumnoItemActivity.this.getResources().getString(R.string.msgCID), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });
        }

        if ( resultado ) {
            Firebase rootRef = new Firebase("https://mi-curso.firebaseio.com/profesor/" + emailProfesor.replace(".", "") + "/mis_cursos");
            // Devolver Curso del Profesor.
            rootRef.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    final Map<String, String> miCurso = (Map<String, String>) dataSnapshot.getValue();

                    Log.d("TAG", miCurso.get("curso_id"));

                    if ( Comun.isVersionLimitada() ) {
                        Firebase cantidadInscriptos = new Firebase("https://mi-curso.firebaseio.com/cursos/" + miCurso.get("curso_id") + "/inscripciones");
                        cantidadInscriptos.addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                if ( dataSnapshot.getChildrenCount() >= 10 ){
                                    Mensaje.getMensaje().mostrarInformacion(CursosAlumnoItemActivity.this, "No puede inscribirse a este Curso, Esta version soporta un Maximo de 10 Inscripciones", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialogInterface, int i) {
                                            CursosAlumnoItemActivity.this.finish();
                                        }
                                    });
                                }
                            }

                            @Override
                            public void onCancelled(FirebaseError firebaseError) {

                            }
                        });
                    }

                    Firebase inscripcion = new Firebase("https://mi-curso.firebaseio.com/cursos/" + miCurso.get("curso_id") + "/inscripciones/" + Comun.getAlumno().getId());
                    Map<String, String> m = new HashMap<String, String>();
                    m.put("legajo", Comun.getAlumno().getLegajo());
                    m.put("nombre", Comun.getAlumno().getNombre());

                    // Inscripcion en Cursos.
                    inscripcion.setValue(m, new Firebase.CompletionListener() {
                        @Override
                        public void onComplete(FirebaseError firebaseError, Firebase firebase) {
                            Firebase miCursoInscripto = new Firebase("https://mi-curso.firebaseio.com/alumno/" + Comun.getAlumno().getId() + "/mis_cursos/" + curso_id);

                            Map<String, String> nuevaInscripcion = new HashMap<String, String>();
                            nuevaInscripcion.put("curso_id", miCurso.get("curso_id"));
                            nuevaInscripcion.put("nombre", miCurso.get("nombre"));
                            nuevaInscripcion.put("horario", miCurso.get("horario"));
                            nuevaInscripcion.put("aula", miCurso.get("aula"));
                            nuevaInscripcion.put("catedra", miCurso.get("catedra"));

                            // Agendar el Curso en el que estoy inscripto.
                            miCursoInscripto.setValue(nuevaInscripcion, new Firebase.CompletionListener() {
                                @Override
                                public void onComplete(FirebaseError firebaseError, Firebase firebase) {
                                    CursosAlumnoItemActivity.this.finish();
                                }
                            });
                        }
                    });
                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {

                }
            });

            rootRef.child(curso_id);
        }
    }
}
